#include<iostream>
using namespace std;

class Animal{
  public:
    int m_Age;
};

class Sheep: virtual public Animal{

};

class Tuo: virtual public Animal{

};

class SheepTuo: public Sheep,  public Tuo{

};

// 下面这种方式为什么不行？？
// class Sheep: public Animal{

// };

// class Tuo: public Animal{

// };

// class SheepTuo: virtual public Sheep, virtual public Tuo{

// };

void test01() {
  SheepTuo st;
  st.Sheep::m_Age = 18;
  st.Tuo::m_Age = 28;
  cout << "st.Sheep::m_Age=" << st.Sheep::m_Age <<endl; // 28
  cout << "st.Tuo::m_Age=" << st.Tuo::m_Age <<endl; // 28
  // cout << "st.m_Age=" << st.m_Age <<endl; // 虚继承之后因为只有一份数据并不会造成二义性，所以可以直接访问，否则其实是基类的属性值

  Animal dog;
  dog.m_Age = 3;
  Tuo tuo;
  cout<< tuo.m_Age <<endl;
}

int main() {
  test01();
  return 0;
}